package com.arpa.wms.service;


import com.arpa.core.web.Result;
import com.arpa.wms.domain.dto.PackBillingMethodDTO;
import com.arpa.wms.domain.dto.PackTaskDTO;
import com.arpa.wms.domain.entity.PackTask;
import com.arpa.wms.domain.vo.PackTaskVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author: rfwang
 * @Date 2021/06/29
 * @Description:
 */
public interface IPackTaskService extends IService<PackTask> {
    /**
     * 打包任务下发
     * @param packTaskDTO
     * @return Result
     */
    Result packTaskIssue(PackTaskDTO packTaskDTO);

    /**
     * 查询合计,包含总数
     * @param packTaskDTO
     * @return
     */
    PackTaskVO queryListSum(PackTaskDTO packTaskDTO);

    /**
     * 查询列表
     * @param packTaskDTO
     * @return
     */
    List<PackTaskVO> queryList(PackTaskDTO packTaskDTO);

    /**
     * 打包任务完成
     * @param dtoList
     * @return Result
     */
    Result complete(List<PackTaskDTO> dtoList,String warehouseCode);

    /**
     * 根据codes更新实体
     * @param dto
     * @return
     */
    int updateByCodes(PackTaskDTO dto);

    /**
     * 获取打包单详情
     * @param code
     * @return
     */
    PackTaskVO getVOWithItemByCode(String code);

    /**
     * 计费方式校验并判断是否生成打包计费方式信息
     *
     * @param packBillingMethodDTO
     * @return
     */
    void validatePackBillingMethod(PackBillingMethodDTO packBillingMethodDTO);

    /**
     * 获取打印信息
     * @param packTaskCodes
     * @return
     */
    List<PackTaskVO> getPintInfo(List<String> packTaskCodes);

    /**
     * 计费单价
     * @return
     */
    BigDecimal billingPrice();

    /**
     * 奖惩录入确认提交
     * @param packTask
     * @return Result
     */
    Result rewardPunishSubmit(PackTask packTask);

}
